package com.lottery.material.service.admin.circle;

import com.lottery.material.pojo.circle.CircleInfo;
import com.lottery.material.pojo.page.Page;
import com.lottery.material.pojocustom.circle.CircleInfoCustom;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * Description：圈子信息服务接口
 * Created by 朱正磊 on 2019-04-13 15:32
 */
public interface CircleInfoService {

    /**
     * description：新增一条数据
     * user 朱正磊
     * time 2019-04-17 17:06
     * @param request 请求对象
     * @param circleInfo 对象
     * @return 返回持久化操作数据库状态值
     */
    Integer add(HttpServletRequest request, CircleInfo circleInfo);

    /**
     * description：根据主键物理删除
     * user 朱正磊
     * time 2019-04-20 15:13
     * @param id 主键
     * @return 返回持久化操作数据库状态值
     */
    Integer deleteById(Integer id);

    /**
     * description：根据主键查询唯一数据
     * user 朱正磊
     * time 2019-04-19 20:11
     * @param id 主键
     * @return 返回唯一数据
     */
    CircleInfo findById(Integer id);

    /**
     * description：根据主键修改一条数据
     * user 朱正磊
     * time 2019-04-17 17:09
     * @param request 请求对象
     * @param circleInfo 对象
     * @return 返回持久化操作数据库状态值
     */
    Integer updateById(HttpServletRequest request, CircleInfo circleInfo);

    /**
     * description：查询扩展类分页列表
     * user 朱正磊
     * time 2019-04-17 17:01
     * @param page 分页对象
     * @return 返回扩展类分页列表数据
     */
    List<CircleInfoCustom> findCustomListPage(Page page);

    /**
     * description：根据主键查询唯一扩展类数据
     * user 朱正磊
     * time 2019-04-17 17:03
     * @param id 主键
     * @return 返回唯一扩展类数据
     */
    CircleInfoCustom findCustomById(Integer id);

    /**
     * description：更新二级类别下的圈子的上下架状态（用来下架）
     * user 朱正磊
     * time 2019-04-23 18:03
     * @param subTypeCode 二级类别编号
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBySubTypeCode(String subTypeCode);

    /**
     * description：批量上架
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param ids 主键集合(多个id以,进行拼接)
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchOn(String ids);

    /**
     * description：批量下架
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param ids 主键集合(多个id以,进行拼接)
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchOff(String ids);

    /**
     * description：批量选入精彩页面
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param ids 主键集合(多个id以,进行拼接)
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchIsWonderful(String ids);

    /**
     * description：批量撤出精彩页面
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param ids 主键集合(多个id以,进行拼接)
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchIsNotWonderful(String ids);

    /**
     * description：根据圈子名称查询圈子列表（可以不存在，如果存在只允许存在一条数据）
     * user 朱正磊
     * time 2019-04-25 15:56
     * @param circleName 圈子名称
     * @return 返回圈子列表
     */
    List<CircleInfo> findByCircleName(String circleName);

    /**
     * description：根据上下架状态查询列表数据
     * user 朱正磊
     * time 2019-05-28 14:11
     * @param state 上下架状态
     * @return 返回列表数据
     */
    List<CircleInfo> findListByState(Integer state);

}
